home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
enigma
/
earcd
/
utility
/
utilmisc
/
maestix.lha
/
Maestix
/
maestix.dok
< prev
next >
Wrap
Text File
|
1995-06-26
|
19KB
|
542 lines
TABLE OF CONTENTS
(V35) maestix.library/AllocMaestro
(V36) maestix.library/FlushReceive
(V36) maestix.library/FlushTransmit
(V35) maestix.library/FreeMaestro
(V35) maestix.library/GetStatus
(V35) maestix.library/ReceiveData
(V35) maestix.library/SetMaestro
(V38) maestix.library/StartRealtime
(V38) maestix.library/StopRealtime
(V35) maestix.library/TransmitData
maestix.library/AllocMaestro maestix.library/AllocMaestro
NAME
AllocMaestro -- Allokiert die Maestro-Soundkarte (V35)
SYNOPSIS
MaestroBase = AllocMaestro (Tags)
D0.l A0.l
(struct MaestroBase *) AllocMaestro (struct TagItem *)
FUNCTION
Diese Funktion belegt die Maestro-Soundkarte und gewährt dem
Klient den alleinigen Zugriff.
Die Karte muß als erstes allokiert werden, bevor sie angesprochen
werden darf.
Der Grundzustand nach AllocMaestro() ist:
Input ist INPUT_STD,
Output ist OUTPUT_BYPASS,
Studio-Modus ist abgeschaltet,
Copy-Protection ist aus,
Emphasis ist aus,
Quell-Kategorie ist DAT,
Rate ist 48kHz,
Validity ist gesetzt,
die UDBs sind zurückgesetzt.
INPUTS
Tags -- Reserviert für zukünftige Optionen.
Momentan soll immer NULL oder ein Zeiger auf TAG_DONE
übergeben.
RESULTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur (privat)
oder NULL, wenn die Karte bereits belegt wurde, nicht
vorhanden ist oder der Speicher nicht ausreichte.
NOTES
Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
SEE ALSO
FreeMaestro()
BUGS
Leider kann nicht verhindert werden, daß eines der MacroSystem-
Programme (also MaestroBR und Samplitude) die Karte nach einem
AllocMaestro() immer noch belegen können.
Diese Funktion versucht zwar auch herauszubekommen, ob ein solches
Programm die Karte bereits belegt hat, und verhindert dann
seinerseits die Belegung. Der Versuch ist allerdings nicht immer
erfolgreich! Seit V37 wurde dieser Test wieder entfernt, da er
bei älteren Maestros manchmal ungerechtfertigt fehlschlug. Die
Programme AllocMstx und FreeMstx lösen das Problem.
maestix.library/FlushReceive maestix.library/FlushReceive
NAME
FlushReceive -- Stoppt Empfang und gibt Msg zurück (V36)
SYNOPSIS
FlushReceive (MaestroBase)
A0.l
VOID FlushReceive (struct MaestroBase *)
FUNCTION
Der Empfangsvorgang wird gestoppt.
Alle durch ReceiveData() an die Maestix gesendeten Nachrichten
werden zurückgesendet.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushTransmit(), ReceiveData()
BUGS
maestix.library/FlushTransmit maestix.library/FlushTransmit
NAME
FlushTransmit -- Stoppt Sendung und gibt Msg zurück (V36)
SYNOPSIS
FlushTransmit (MaestroBase)
A0.l
VOID FlushTransmit (struct MaestroBase *)
FUNCTION
Der Sendevorgang wird gestoppt.
Alle durch TransmitData() an die Maestix gesendeten Nachrichten
werden zurückgesendet.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
SEE ALSO
FlushReceive(), TransmitData()
BUGS
maestix.library/FreeMaestro maestix.library/FreeMaestro
NAME
FreeMaestro -- Gibt die Maestro-Soundkarte frei (V35)
SYNOPSIS
FreeMaestro (MaestroBase)
A0.l
VOID FreeMaestro (struct MaestroBase *)
FUNCTION
Nach dem Gebrauch muß der Klient die belegte Karte wieder
freigeben. Das geschieht durch diese Funktion.
Alle an Maestix gesendete Nachrichten werden zurückgesendet.
Die FIFOs werden gelöscht, die Karte wird zurückgesetzt und
geht in den Bypass-Modus über.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
SEE ALSO
AllocMaestro()
BUGS
maestix.library/GetStatus maestix.library/GetStatus
NAME
GetStatus -- Gibt den Kartenstatus zurück (V35)
SYNOPSIS
Status = GetStatus (MaestroBase,Info-Typ)
D0.l A0.l D0.l
ULONG GetStatus (struct MaestroBase *,ULONG)
FUNCTION
Der Zustand vom gewünschten Info-Typ wird zurückgegeben.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Info-Typ -- Typ-Code (MSTAT_...), dessen Wert
zurückgegeben werden soll.
RESULTS
Status -- Status des entsprechenden Typs.
NOTES
Es existieren folgende Info-Typen:
MSTAT_TFIFO -- (ULONG) Zustand der Transmitter-FIFO
- FIFO_Off -> Transmitter ist aus
- FIFO_Running -> Übertragung läuft
- FIFO_Error -> seit der letzten Abfrage
trat ein Fehler auf
MSTAT_RFIFO -- (ULONG) Zustand der Receiver-FIFO
- FIFO_Off -> Receiver ist aus
- FIFO_Running -> Übertragung läuft
- FIFO_Error -> seit der letzten Abfrage
trat ein Fehler auf
MSTAT_Signal -- (BOOL) prüft, ob ein Signal am gewünschten INPUT
anliegt.
MSTAT_Emphasis -- (BOOL) gibt an, ob das Eingangssignal mit Emphasis
aufgenommen wurde.
MSTAT_DATsrc -- (BOOL) gibt an, ob die Datenquelle ein DAT- bzw.
DCC-Recorder ist.
MSTAT_CopyProh -- (BOOL) zeigt, ob ein Urheberrechtschutz vom
Quellsignal gewünscht wird. Ob es sich aber
bereits um eine Kopie handelt, läßt sich nicht
feststellen.
MSTAT_Rate -- (ULONG) gibt die Rate am Eingang an.
MSTAT_UDB -- (UBYTE) [V37] gibt die aktuellen UDBs zurück.
SEE ALSO
BUGS
maestix.library/ReceiveData maestix.library/ReceiveData
NAME
ReceiveData -- Empfängt Daten in eine Message (V35)
SYNOPSIS
ReceiveData (MaestroBase, DataMessage)
A0.l A1.l
VOID ReceiveData (struct MaestroBase, struct DataMessageNode *)
FUNCTION
Dies ist die Funktion zur Übertragung von Daten durch die Maestro.
Der Platz für die eingehenden Daten wird in einer normalen
System-Message zur Verfügung gestellt. Diese Message muß einen
Zeiger auf den Reply-Port vom Klienten haben. Außerdem wird in
der Message ein Zeiger auf den zu füllenden Puffer sowie dessen
Länge übergeben.
Diese Message wird nun in die Eingangs-Queue eingehängt. Sollte
der Empfangsvorgang noch nicht gestartet worden sein, geschieht
dies danach.
Wenn der Datenpuffer durch die eingehenden Daten gefüllt wurde,
wird die Message an den Klienten replyed. Er kann nun die Daten
bearbeiten und anschließend die Message erneut absenden.
Sollten die Messages ausbleiben, wird der Einlesevorgang
abgebrochen, wenn die Receive-FIFO überläuft.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
DataMessage -- Zeiger auf eine DataMessageNode mit einem Zeiger
auf den Datenpuffer für die eingehenden Daten.
RESULTS
NOTES
Der Datenpuffer muß Public Memory sein und an einer durch 4
teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
10KByte betragen und durch 1024 teilbar sein.
Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt
werden.
SEE ALSO
TransmitData(), FlushReceive(), StopRealtime()
BUGS
maestix.library/SetMaestro maestix.library/SetMaestro
NAME
SetMaestro -- Stellt die Maestro-Parameter ein (V35)
SYNOPSIS
SetMaestro (MaestroBase, Tags)
A0.l A1.l
VOID SetMaestro (struct MaestroBase *, struct TagItem *)
FUNCTION
Die Kartenparameter werden verändert. Hierzu werden der
Funktion Tags übergeben.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Tags -- Tags, die die Einstellungen angeben.
RESULTS
TAGS
MTAG_Input -- (ULONG) gibt den Eingang an, den die Maestro
verwenden soll. Default ist INPUT_STD, was
den vom User gewählten Standard-Eingang verwendet.
Mit INPUT_OPTICAL und INPUT_COAXIAL kann auch
gezielt ein Eingang ausgewählt werden.
INPUT_SRC48K wählt eine interne Quelle, welche
konstant einen 48kHz-Referenztakt liefert,
unabhängig vom Eingangssignal.
MTAG_Output -- (ULONG) gibt an, welches Signal am Ausgang vorliegt.
Default ist OUTPUT_BYPASS, womit das am
gewählten Eingang anliegende Signal direkt zum
Ausgang weitergeleitet wird. OUTPUT_INPUT gibt
das vom Encoder codierte Eingangssignal am
Ausgang aus. So können gezielt UDBs und CSBs
geändert werden. Mit OUTPUT_FIFO wird das Signal
von der Transmit-FIFO an den Ausgang gelegt.
MTAG_SetCSB -- (ULONG) Die angegebenen 32 Bit werden als
Channel Status Bits durch den Encoder ausgegeben.
Dieses Tag sollte nur in Ausnahmefällen verwendet
werden!
MTAG_SetUDB -- (ULONG) Die angegebenen 32 Bit werden als
User Data Bits durch den Encoder ausgegeben.
MTAG_Studio -- (BOOL) Ist dieses Tag TRUE, wird in den
Studio-Modus geschaltet und die CSBs entsprechend
dieser Norm kodiert. Im Heimbereich sollte dieser
Modus immer FALSE sein (default).
MTAG_CopyProh -- (ULONG) gibt an, ob ein Kopieschutz verwendet
werden soll. Default ist CPROH_OFF, was einen
Kopierschutz abschaltet. CPROH_ON aktiviert
den Kopierschutz und erlaubt noch eine digitale
Kopie der Ausgangssignals. CPROH_PROHIBIT
sperrt eine digitale Aufnahmemöglichkeit.
CPROH_INPUT schaltet den Kopierschutz entsprechend
dem Eingangssignal aus oder ein.
MTAG_Emphasis -- (ULONG) gibt die Emphasis des Ausgangssignals
an. Default ist EMPH_OFF, was keine Emphasis
angibt. Standard ist EMPH_50us ( = EMPH_ON);
im Studio-Modus steht außerdem noch EMPH_CCITT
und EMPH_MANUAL zur Verfügung. EMPH_INPUT
wählt die Emphasis entsprechend dem Eingangssignal.
MTAG_Source -- (ULONG) gibt den Quellen-Kategoriecode an.
Default ist SRC_DAT, außerdem sind SRC_CD,
SRC_DSR, SRC_ADCONV und SRC_INSTR angegeben.
Mit SRC_INPUT wird gemäß dem Eingangssignal
zwischen SRC_DAT und SRC_CD umgeschaltet.
MTAG_Rate -- (ULONG) gibt die Datenrate an. Default ist
RATE_48000, ansonsten existieren RATE_44100,
RATE_32000 und RATE_48000MANU. RATE_INPUT
wählt die Rate gemäß dem Eingangssignal.
MTAG_Validity -- (BOOL) gibt die Gültigkeit des ausgehenden
Signals an. Ist dieses Tag FALSE, sind die
Daten ungültig, was von vielen Endgeräten
erkannt wird.
MTAG_ResetUDB -- Wenn dieses Tag angegeben wird, wird die UDB-
Information gelöscht und eine Ausgabe der
UDBs unterbunden.
MTAG_ResetLSA -- [V37] Wenn dieses Tag angegeben wird, wird die
Local-Sample-Address gelöscht. Diese findet in
der Übertragung im Studio-Format verwendung.
NOTES
Beachten Sie, daß MTAG_Rate lediglich in das Ausgabesignal
verwoben wird, jedoch keine Rate auf der Maestro einstellt.
Die Maestro ist lediglich in der Lage, eine 48kHz-Rate zu erzeugen
(INPUT_SRC48K). Davon abweichende Raten müssen am ausgewählten
Eingang angelegt werden.
Stimmt die MTAG_Rate nicht mit dem tatsächlichen Takt überein,
kann das Signal in der Regel vom Empfänger nicht bearbeitet
werden.
Ein DAT-Delay wird eingelegt, wenn durch MSTAG_Input und/oder
MSTAG_Output ein Ein- bzw. Ausgang gewechselt wird. Beachten Sie
hier, daß die Wartezeit bis zu 30 Sekunden dauern kann!
Achtung: Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen
werden!
SEE ALSO
BUGS
maestix.library/StartRealtime maestix.library/StartRealtime
NAME
StartRealtime -- Startet einen Realtime-Effekt (V38)
SYNOPSIS
StartRealtime (MaestroBase, Tags)
A0.l A1.l
VOID StartRealtime (struct MaestroBase *, struct TagItem *)
FUNCTION
Ein Realtime-Effekt wird gestartet. Vorher sollte durch SetMaestro()
der entsprechende Eingang ausgewählt und OUTPUT_FIFO eingestellt
werden.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Tags -- Tags, die die Effektparameter angeben.
RESULTS
TAGS
MTAG_Effect -- (ULONG) Wählt einen eingebauten Effekt aus (default:
RFX_Bypass). Effekte siehe Includedatei.
MTAG_A0 -- (APTR) Parameter für die Effekte
MTAG_A1 -- (APTR) Parameter für die Effekte
MTAG_D2 -- (ULONG) Parameter für die Effekte
MTAG_D3 -- (ULONG) Parameter für die Effekte
MTAG_CustomCall -- (APTR) Dieses Tag signalisiert, daß eine eigene
Effekt-Routine verwendet werden soll. Übergeben wird durch
dieses Tag ein Zeiger auf diese Routine.
NOTES
Die eigene Effekt-Routine bekommt folgende Parameter übergeben:
-> D0 -- (WORD) linkes Datenwort
-> D1 -- (WORD) rechtes Datenwort
-> D2 -- (ULONG) siehe MTAG_D2
-> D3 -- (ULONG) siehe MTAG_D3
-> D6 -- (ULONG) Scratch-Register
-> D7 -- (ULONG) Scratch-Register
-> A0 -- (ULONG) siehe MTAG_A0
-> A1 -- (ULONG) siehe MTAG_A1
-> A2 -- (APTR) Rücksprungadresse
Die Routine liefert:
<- D0 -- (WORD) neues linkes Datenwort
<- D1 -- (WORD) neues rechtes Datenwort
Die Register D2 bis D5 und A0 bis A7 dürfen nicht verändert werden.
Der Rücksprung aus der Effekt-Routine erfolgt mit "JMP (A2)", und
nicht etwa mit RTS!
Die Effekt-Routine muß im MEMF_PUBLIC-Bereich stehen! Zu beachten
ist hier, daß ein Task nicht unbedingt im MEMF_PUBLIC-Bereich
gestartet wird! Die Routine sollte außerdem in hochoptimiertem
Assemblercode geschrieben sein.
Wenn die Effektroutine zu viel Rechenzeit beansprucht, stoppt die
Realtime-Funktion automatisch, und MSTAT_TFIFO sowie MSTAT_RFIFO
melden FIFO_Error.
SEE ALSO
StopRealtime()
BUGS
maestix.library/StopRealtime maestix.library/StopRealtime
NAME
StopRealtime -- Stoppt den Realtime-Effekt (V38)
SYNOPSIS
StopRealtime (MaestroBase)
A0.l
VOID StopRealtime (struct MaestroBase *)
FUNCTION
Ein zuvor gestarteter Realtime-Effekt wird durch diese Funktion
wieder gestoppt.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
RESULTS
NOTES
Vor einem TransmitData() oder ReceiveData() muß ein eventuell
laufender Realtime-Effekt durch diese Funktion gestoppt werden.
SEE ALSO
StartRealtime()
BUGS
maestix.library/TransmitData maestix.library/TransmitData
NAME
TransmitData -- Überträgt Daten in einer Message (V35)
SYNOPSIS
TransmitData (MaestroBase, DataMessage)
A0.l A1.l
VOID TransmitData (struct MaestroBase *, struct DataMessageNode *)
FUNCTION
Dies ist die Funktion zur Übertragung von Daten durch die Maestro.
Die abgehenden Daten werden durch eine normale System-Message
zur Verfügung gestellt. Diese Message muß einen Zeiger auf den
Reply-Port vom Klienten haben. Außerdem wird in der Message ein
Zeiger auf den auszugebenden Puffer sowie dessen Länge übergeben.
Diese Message wird nun in die Ausgabe-Queue eingehängt. Sollte
die Ausgabe noch nicht gestartet worden sein, geschieht dies
danach.
Wenn die Daten ausgegeben wurden, wird die Message an den Klienten
replyed. Er kann den Pufferbereich nun mit neuen Daten füllen und
erneut absenden.
Sollten die Messages ausbleiben, wird die Ausgabe abgebrochen,
sobald die Transmit FIFO vollständig geleert wurde.
INPUTS
MaestroBase -- Zeiger auf die MaestroBase-Struktur von
AllocMaestro().
Message -- Zeiger auf eine DataMessageNode mit den auszugebenden
Daten.
RESULTS
NOTES
Der Datenpuffer muß Public Memory sein und an einer durch 4
teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
10KByte betragen und durch 1024 teilbar sein.
Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt werden.
SEE ALSO
ReceiveData(), FlushTransmit(), StopRealtime()
BUGS